﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IMailer.cs" company="">
//   Copyright (c) 2010/2011 All Right Reserved
// </copyright>
// <summary>
//   Contains IMailer interface declaration.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace IBupro.Classes
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using iBuproModel;

    /// <summary>
    /// Interface for mailer classes.
    /// </summary>
    public interface IMailer
    {
        /// <summary>
        /// Sends message to specified email.
        /// Implementation of this method should use params from web.config
        /// </summary>
        /// <param name="destinationEmail"></param>
        /// <param name="subject"></param>
        /// <param name="message"></param>
        void MailTo(string  destinationEmail, string subject, string message);

        /// <summary>
        /// Informs lector about project booking
        /// </summary>
        /// <param name="project"></param>
        /// <param name="student"></param>
        /// <param name="destinationEmail"></param>
        /// 
        void ProjectHasBeenBooked(DiplomProject project, User student);


        /// <summary>
        /// Informs Department principal about new project for approval
        /// </summary>
        /// <param name="project"></param>
        /// <param name="customMessage">Custom message from form in view to departmentprincipal</param>
        /// <param name="destinationEmail"></param>
        void ProjectHasBeenAcceptedByLector(DiplomProject project, string customMessage);

        /// <summary>
        /// Project has benn denied by principal. This Mmethod informs student and lector of project
        /// </summary>
        /// <param name="project"></param>
        void ProjectHasBeenAcceptedByPrincipal(DiplomProject project);

        /// <summary>
        /// Project has benn denied by principal. This Method informs lector of project
        /// </summary>
        /// <param name="project"></param>
        /// <param name="customMessage"></param>
        void ProjectHasBeenDeniedByPrincipal(DiplomProject project, string customMessage);

        /// <summary>
        /// Student requests participation in project
        /// </summary>
        /// <param name="project"></param>
        void StudentRequestStudentProjectToLector(Project project, User requester);

        /// <summary>
        /// Lector accepts student project request
        /// </summary>
        /// <param name="project"></param>
        /// <param name="requester">user who has requested the request</param>
        void LectorAcceptReplyStudentProjectRequest(Project project, User requester);

        /// <summary>
        /// Lector denies student project request
        /// </summary>
        /// <param name="project"></param>
        /// <param name="requester">user who has requested the request</param>
        void LectorDenyReplyStudentProjectRequest(Project project, User requester);





    }
}
